const path = require('path')
const webpack = require('webpack')
// const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
// const CompressionWebpackPlugin = require('compression-webpack-plugin')
const utils = require('./build/utils')
const { configBanner } = require('./build/util.config')

const isPro = process.env.NODE_ENV === 'production'

function resolve (dir) {
  return path.join(__dirname, dir)
}

const baseUrl = process.env.VUE_APP_PUBLICPATH
// console.log('----baseUrl---', process.env)
// console.log('----baseUrl---', baseUrl)

module.exports = {
  publicPath: baseUrl,
  productionSourceMap: false,
  outputDir: baseUrl !== '/' ? 'docs' : 'dist', // 针对GitHub/Gitee 配置的, 2个目录可以对比
  indexPath: 'index.html', // 指定生成的index.html输出路径
  // https://webpack.js.org/configuration/devtool/#development
  // https://webpack.js.org/configuration/devtool/#production
  // devtool: devtool,
  pages: utils.getPages({
    addScript () {
      return ''
    }
  }),
  // configureWebpack: {
  //   resolve: {
  //     alias: {
  //       '@': resolve('src'),
  //       _img: resolve('src/images'),
  //     }
  //   }
  // },
  chainWebpack: config => {
    // config.module
    //   .rule('images')
    //   .use('url-loader')
    //   .tap(options =>
    //     merge(options, {
    //       limit: 5120,
    //     })
    //   )

    config.resolve.alias
      .set('@', resolve('src'))
      .set('imgage', resolve('src/images'))
  },

  configureWebpack: config => {
    if (isPro) {
      return {
        plugins: [
          new webpack.BannerPlugin({ banner: configBanner })
          // 开启 Gzip 压缩
          // new CompressionWebpackPlugin({
          //   asset: '[path].gz[query]',
          //   algorithm: 'gzip',
          //   test: new RegExp(
          //     '\\.(js|css)$'
          //   ),
          //   threshold: 10240,
          //   minRatio: 0.8
          // }),

          // 使用包分析工具
          // https://blog.csdn.net/yuanfangyoushan/article/details/107191287
          // new BundleAnalyzerPlugin()
        ]
      }
    }
  },

  devServer: {
    historyApiFallback: {
      rewrites: utils.rewrites(baseUrl)
    },
    // open: true, // 是否自动打开浏览器页面
    // host: '127.0.0.1', // 指定使用一个 host。默认是 localhost
    port: 8080, // 端口地址
    // https: false, // 使用https提供服务
    // string | Object 代理设置
    // proxy: {
    //   '/repos': {
    //     target: 'https://api.github.com',
    //     changeOrigin: true
    //     // pathRewrite: {'^/api': ''}
    //   }
    // },
    progress: true
    // 提供在服务器内部的其他中间件之前执行自定义中间件的能力
    // before: app => {
    //   // `app` 是一个 express 实例
    // }
  }
}
